home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HPAVC
/
HPAVC CD-ROM.iso
/
OTFIRE.ZIP
/
fire.doc
< prev
next >
Wrap
Text File
|
1996-01-10
|
5KB
|
97 lines
- THE OUTLAW TRIAD DEMO-SERIES -
─────────────────────────────────■ PART I ■──────────────────────────────────
Written by : Vulture/OT
Code in : Pascal/Asm
Topic : Fire effect
──────────────────────────────■ Introduction ■───────────────────────────────
Welcome to the Outlaw Triad demo-series! In these series we will be talking
about programming demo-effects in either pascal or assembler. Theory behind
the effects shall be discussed while a full sourcecode is also provided.
These series are the sequals to the VGA-VUL# releases in which a few demo
effects were handled and are meant for the beginner and intermediate coder.
From now on all demo tutorials from Outlaw Triad will be released in these
series. We from Outlaw Triad know there are already large amounts of demo
trainers available (best of which seem to be the ones by Denthor/Asphyxia)
but we experienced that it can be helpfull to read more than one document
on the same subject. Enjoy these series!
─────────────────────────────────■ Theory ■──────────────────────────────────
In this very first release I will cover a wellknown effect... FIRE!
This is actually a simple routine, in theory. The only math is takes
are some simple calculations to avarage certain values. Here we go:
We will be using an unchained vgascreen with resolution 320*200*256.
This will speed up our routine by a factor of 4 because we can plot
4 pixels at a time due to vga-hardware. Now you need to setup a nice
palette for use in our fire. E.g from dark red to bright yellow.
Ok, we will also be using a 100 scanlines for our fire. This way, you
will have another 100 scanlines left to do other things with.
Create an array large enough to hold this data. We then flip the data to
the vga. Why use an array? Because vga-memory is a lot slower than normal
memory! In this case it is faster to update data in pc-memory and then
flip it to the vga. This can also avoid flickering.
Now, on the last row, put random values between 0 and 255 (or whatever
colorrange you want. I used 0..85). Then create a fire effect like this:
Start with the first pixel (actually 4 pixels) on the second row. Then
take the 3 pixels above, the 3 pixels below and the 2 pixels besides that
pixel. Divide by 3+3+2=8 to avarage these values. If the found value is not
zero, decrease it by 1 to fade the fire to black. The fire on the bottom
will then be brighter than the fire at the top which will make a good fire
routine. Store the found value in the pixel ABOVE the current pixel. This
will make the flames go up. Then point to the next pixel on the line and do
the same. Do this for all lines. When finished, wait for a vertical retrace,
flip the data to the vga screen and start over. That's it!
In steps:
- set bottom line with random values
- start avaraging from second line
- do all lines
- wait for vertical retrace
- flip to vga
One thing left to say... As the bottom line is rather ugly with it's
random values scattered on it, we hide the last few lines on the second
page in display memory. Offscreen memory can be handy indeed! ;-)
So you see, it's not that hard to understand. What can be hard is to realy
code it. Take a look at the source to see how it can be done. The code here
is in assembler because that is the real democode language to use, IMHO.
There are many fire trainers available, so if you don't understand it, go
study some more of them. Btw, thanks must go to all who have release fire
code before I did (I learned from tutors too, you know ;-) ).
Ok, this is all for now. Happy coding!
- Vulture / Outlaw Triad
───────────────────────────────■ Distro Sites ■──────────────────────────────
Call our distros to get all our releases.
BlueNose World HQ +31 (0)345-619401
FireHouse Distrosite +31 (0)528-274176 More distros wanted!
The Force Distrosite +31 (0)36-5346967
MagicWare Italian HQ +39 6-52355532
──────────────────────────────────■ Contact ■────────────────────────────────
Want to contact Outlaw Triad for some reason? You can reach us at our
distrosites in Holland. Or if you have e-mail access, mail us:
Vulture (coder/pr) comma400@tem.nhl.nl
Our internet homepage:
httm://www.tem.nhl.nl/~comma400/vulture.html
These internet adresses should be valid at least till june 1996.
──────────────────────────────────────────────────────────────────────────────